#pandas是一个python 用于数据分析的库，对数据的清洗（错误数据的过滤，填值）  转换 等预处理提供功能的库
#错误数据的产生
#1.人为因素 多打了个0 3 看成8  1看成7
#2.设备故障 扫描不精准 意外
import pandas as pd
import time

user_infos = pd.read_table('data/银行用户信息.txt',header=None,sep=',',encoding='utf-8')
print(user_infos)
#print(type(user_goods)) #DataFrame 表格
#表头需要字典形式 {key:value}
keyList = list(range(9))
headlist = ['编号','姓名','性别','身高','出生日期','户籍','开户地区','开卡时间','余额']
headDict = dict(zip(keyList,headlist))  #将两个列表组合成字典
print(headDict)
#换头
user_infos.reset_index()
user_infos.rename(columns=headDict,inplace=True)
#print(user_goods)
#切片
print('----切片-----')
#print(user_goods.loc[0:4,1:4]) #dataFrame切片 ,之前是横切 ，之后是竖切 都是从哪切到哪
#print(user_goods.loc[0:4,1:4])  #切片0-4行 : 表示连续  的  1-4列 所以是5行4列数据
#print(user_goods.loc[[1,3,4],2:5]) #切片编号第 1 第2 第4 一共3行，编号第2到第5 4列 所以一共 3行 4列
#--------换头前 表格 默认字段名是数字编号-----------
#print(user_goods.loc[[0,1,4],[3,4,6,8]])
print(user_infos.loc[[0,1,4],['编号','姓名','性别','开卡时间']])


#user_info_cover=user_infos['身高']<175 # user_infos['身高']<175 等的一个序列（一维数组） 也相当于形成了一个遮罩(user_info_cover)
#user_infos= user_infos.loc[user_info_cover,] #将遮罩放入dataframe过滤 能够显示的数据留下（遮罩中为true留下）

#user_info_cover=user_infos['性别']=='女'
#user_infos= user_infos.loc[user_info_cover,]

#user_infos 是一个DataFrame 做直接条件筛选后 的一个seriers 一维数组，遮罩必须是一个seriers才能被识别
#因为直接取得的字段集合是不能做字符串操作，只有里面的每个值可以做字符串操作，所以需要把每个值循环出来（如何循环，将seriers
# 直接变成list 用list的列表推导式来循环和过滤）
#user_info_cover=[area.find('四川') >= 0 for area in list(user_infos['户籍'])]
time1= time.mktime(time.strptime('2022-06-01','%Y-%m-%d'))
user_info_cover=\
    [time.mktime(time.strptime(beginDate[0:10:],'%Y-%m-%d')) < time1 for beginDate in list(user_infos['开卡时间'])]
user_infos= user_infos.loc[user_info_cover,]

#找出开卡时间在2022年6月1日之前的用户
print(user_infos)






